package com.uls.questionnaire.service;

import java.util.List;

import com.uls.questionnaire.domain.ZxhQuestion;
import com.uls.questionnaire.domain.ZxhQuestionnaire;
import com.uls.questionnaire.mapper.ZxhQuestionnaireMapper;
import com.uls.questionnaire.vo.QuestionnaireVO;
import com.uls.questionnaire.vo.QuestionnaireViewVO;
import com.uls.questionnaire.vo.TaskCommentVo;
import org.springframework.beans.factory.annotation.Autowired;

/**
 * 问卷信息Service接口
 * 
 * @author zxh
 * @date 2024-10-31
 */
public interface IZxhQuestionnaireService 
{




    /**
     * 查询问卷信息
     * 
     * @param questionnaireId 问卷信息主键
     * @return 问卷信息
     */
    public ZxhQuestionnaire selectZxhQuestionnaireByQuestionnaireId(Long questionnaireId);

    /**
     * 查询问卷信息列表
     * 
     * @param zxhQuestionnaire 问卷信息
     * @return 问卷信息集合
     */
    public List<ZxhQuestionnaire> selectZxhQuestionnaireList(ZxhQuestionnaire zxhQuestionnaire);

    /**
     * 新增问卷信息
     * 
     * @param zxhQuestionnaire 问卷信息
     * @return 结果
     */
    public int insertZxhQuestionnaire(ZxhQuestionnaire zxhQuestionnaire);

    /**
     * 修改问卷信息
     * 
     * @param zxhQuestionnaire 问卷信息
     * @return 结果
     */
    public int updateZxhQuestionnaire(ZxhQuestionnaire zxhQuestionnaire);

    /**
     * 批量删除问卷信息
     * 
     * @param questionnaireIds 需要删除的问卷信息主键集合
     * @return 结果
     */
    public int deleteZxhQuestionnaireByQuestionnaireIds(Long[] questionnaireIds);

    /**
     * 删除问卷信息信息
     * 
     * @param questionnaireId 问卷信息主键
     * @return 结果
     */
    public int deleteZxhQuestionnaireByQuestionnaireId(Long questionnaireId);



    public List<QuestionnaireViewVO> getQuestionnaireDetails(Long questionnaireId);


//    public QuestionnaireVO getQuestionnaireVo(Long questionnaireId) ;

    List<QuestionnaireVO> getAllQuestionnaires();

    public int submit(Long questionnaireId,Long userId);

    List<ZxhQuestionnaire> noFinishTask(Long userId,String processDefiniionKey);
    List<ZxhQuestionnaire> noFinishTask(Long userId,String processDefiniionKey,ZxhQuestionnaire questionnaire);

    void completeTask(Long flowInstantId,Integer agree,Long userId,String comment,Long questionnaireId);

    /**
     * 根据流程id获取历史审批数据（task，comment）
     * @param flowInstantId
     * @return
     */
    List<TaskCommentVo> getTaskCommentList(Long flowInstantId);

    List<ZxhQuestionnaire> finishTask(Long userId,String processDefiniionKey);

    List<ZxhQuestionnaire> finishTask(Long userId,String processDefiniionKey,ZxhQuestionnaire questionnaireQuery);
}
